#include "../../../lvgl/examples/lv_examples.h"
#include <stdio.h>

#if LV_BUILD_EXAMPLES
#if LV_USE_FREETYPE

#if LV_FREETYPE_USE_LVGL_PORT
    #define PATH_PREFIX "A:"
#else
    #define PATH_PREFIX "./"
#endif

// 文件路径配置
#define WEATHER_BTN_IMG_PATH "A:reportweather.jpg"
#define VIEDO_BTN_IMG_PATH "A:viedo.jpg"
#define PHOTO_BTN_IMG_PATH "A:photo.jpg"
#define BROWSER_BTN_IMG_PATH "A:browser.jpg"



static void create_weather_button(void) {
    /* 1. 定义过渡动画（按压时宽度变化+颜色变暗） */
    static lv_style_prop_t trans_props[] = {
        LV_STYLE_TRANSFORM_WIDTH,    // 动画属性：宽度变化
        LV_STYLE_IMAGE_RECOLOR_OPA,  // 动画属性：重新着色透明度
        0                           // 结束标记
    };
    
    static lv_style_transition_dsc_t transition;
    lv_style_transition_dsc_init(&transition, 
                                trans_props,           // 动画属性数组
                                lv_anim_path_linear,   // 线性动画曲线
                                200,                   // 动画时长（毫秒）
                                0,                     // 延迟时间
                                NULL);                 // 用户数据

    lv_font_t * font = lv_freetype_font_create(PATH_PREFIX "./aaa.ttf",
                                               LV_FREETYPE_FONT_RENDER_MODE_BITMAP,
                                               20,
                                               LV_FREETYPE_FONT_STYLE_NORMAL);

    if(!font) {
        LV_LOG_ERROR("freetype font create failed.");
        return;
    }

    /* 2. 创建按钮默认样式 */
    static lv_style_t style_def;
    lv_style_init(&style_def);
    
    // 设置背景图片
    lv_style_set_bg_image_src(&style_def, WEATHER_BTN_IMG_PATH);
    lv_style_set_bg_opa(&style_def, LV_OPA_COVER);     // 不透明度100%
    lv_style_set_bg_image_tiled(&style_def, false);    // 禁止平铺（自动拉伸）
    
    // 设置文字样式
    lv_style_set_text_color(&style_def, lv_color_white());
    lv_style_set_text_font(&style_def, &lv_font_montserrat_20);
    
    /* 1. 默认样式（带过渡动画） */
    lv_style_set_transition(&style_def, &transition);  // 确保 transition 已定义

    /* 2. 按压样式（缩放效果） */
    static lv_style_t style_pr;
    lv_style_init(&style_pr);
    lv_style_set_transform_zoom(&style_pr, 250);       // 放大到 250%（1.0 = 100%）
    lv_style_set_transform_pivot_x(&style_pr, 50);     // 缩放中心 X（百分比）
    lv_style_set_transform_pivot_y(&style_pr, 50);     // 缩放中心 Y（百分比）
    lv_style_set_image_recolor_opa(&style_pr, LV_OPA_0); // 禁用重色（保持原图颜色）
    /* 4. 创建按钮并应用样式 */
    lv_obj_t *btn = lv_btn_create(lv_scr_act());
    lv_obj_set_size(btn, 200, 200);  // 平板APP常见尺寸

    lv_coord_t screen_width = lv_disp_get_hor_res(NULL);  // NULL 表示默认显示器
    lv_coord_t screen_height = lv_disp_get_ver_res(NULL);
    lv_obj_set_pos(btn, screen_width/20, screen_height/2+50);
    
    // 应用样式
    lv_obj_add_style(btn, &style_def, LV_PART_MAIN);      // 默认状态
    lv_obj_add_style(btn, &style_pr, LV_STATE_PRESSED);   // 按压状态

    // /* 5. 添加文字标签 */
    // static lv_style_t style;
    // lv_style_init(&style);
    // lv_style_set_text_font(&style, font);

    // lv_obj_t *label = lv_label_create(btn);
    // lv_obj_add_style(label, &style, 0);
    // lv_label_set_text(label, "天气预报");
    // lv_obj_align(label, LV_ALIGN_OUT_BOTTOM_MID, 0,0);
}


static void create_video_button(void) {
    /* 1. 定义过渡动画（按压时宽度变化+颜色变暗） */
    static lv_style_prop_t trans_props[] = {
        LV_STYLE_TRANSFORM_WIDTH,    // 动画属性：宽度变化
        LV_STYLE_IMAGE_RECOLOR_OPA,  // 动画属性：重新着色透明度
        0                           // 结束标记
    };
    
    static lv_style_transition_dsc_t transition;
    lv_style_transition_dsc_init(&transition, 
                                trans_props,           // 动画属性数组
                                lv_anim_path_linear,   // 线性动画曲线
                                200,                   // 动画时长（毫秒）
                                0,                     // 延迟时间
                                NULL);                 // 用户数据

    lv_font_t * font = lv_freetype_font_create(PATH_PREFIX "./aaa.ttf",
                                               LV_FREETYPE_FONT_RENDER_MODE_BITMAP,
                                               20,
                                               LV_FREETYPE_FONT_STYLE_NORMAL);

    if(!font) {
        LV_LOG_ERROR("freetype font create failed.");
        return;
    }

    /* 2. 创建按钮默认样式 */
    static lv_style_t style_def;
    lv_style_init(&style_def);
    
    // 设置背景图片
    lv_style_set_bg_color(&style_def, lv_color_hex(0xffffff)); 
    lv_style_set_bg_image_src(&style_def, VIEDO_BTN_IMG_PATH);
    lv_style_set_bg_opa(&style_def, LV_OPA_COVER);     // 不透明度100%
    lv_style_set_bg_image_tiled(&style_def, false);    // 禁止平铺（自动拉伸）
    
    // 设置文字样式
    lv_style_set_text_color(&style_def, lv_color_white());
    lv_style_set_text_font(&style_def, &lv_font_montserrat_20);
    
    /* 1. 默认样式（带过渡动画） */
    lv_style_set_transition(&style_def, &transition);  // 确保 transition 已定义

    /* 2. 按压样式（缩放效果） */
    static lv_style_t style_pr;
    lv_style_init(&style_pr);
    lv_style_set_transform_zoom(&style_pr, 250);       // 放大到 250%（1.0 = 100%）
    lv_style_set_transform_pivot_x(&style_pr, 50);     // 缩放中心 X（百分比）
    lv_style_set_transform_pivot_y(&style_pr, 50);     // 缩放中心 Y（百分比）
    lv_style_set_image_recolor_opa(&style_pr, LV_OPA_0); // 禁用重色（保持原图颜色）
    /* 4. 创建按钮并应用样式 */
    lv_obj_t *btn = lv_btn_create(lv_scr_act());
    lv_obj_set_size(btn, 200, 200);  // 平板APP常见尺寸

    lv_coord_t screen_width = lv_disp_get_hor_res(NULL);  // NULL 表示默认显示器
    lv_coord_t screen_height = lv_disp_get_ver_res(NULL);
    lv_obj_set_pos(btn, screen_width/20+200+30, screen_height/2+50);
    
    // 应用样式
    lv_obj_add_style(btn, &style_def, LV_PART_MAIN);      // 默认状态
    lv_obj_add_style(btn, &style_pr, LV_STATE_PRESSED);   // 按压状态

    // /* 5. 添加文字标签 */
    // static lv_style_t style;
    // lv_style_init(&style);
    // lv_style_set_text_font(&style, font);

    // lv_obj_t *label = lv_label_create(btn);
    // lv_obj_add_style(label, &style, 0);
    // lv_label_set_text(label, "腾讯视频");
    // lv_obj_align(label, LV_ALIGN_OUT_BOTTOM_MID, 0,0);
}


static void create_photo_button(void) {
    /* 1. 定义过渡动画（按压时宽度变化+颜色变暗） */
    static lv_style_prop_t trans_props[] = {
        LV_STYLE_TRANSFORM_WIDTH,    // 动画属性：宽度变化
        LV_STYLE_IMAGE_RECOLOR_OPA,  // 动画属性：重新着色透明度
        0                           // 结束标记
    };
    
    static lv_style_transition_dsc_t transition;
    lv_style_transition_dsc_init(&transition, 
                                trans_props,           // 动画属性数组
                                lv_anim_path_linear,   // 线性动画曲线
                                200,                   // 动画时长（毫秒）
                                0,                     // 延迟时间
                                NULL);                 // 用户数据

    lv_font_t * font = lv_freetype_font_create(PATH_PREFIX "./aaa.ttf",
                                               LV_FREETYPE_FONT_RENDER_MODE_BITMAP,
                                               20,
                                               LV_FREETYPE_FONT_STYLE_NORMAL);

    if(!font) {
        LV_LOG_ERROR("freetype font create failed.");
        return;
    }

    /* 2. 创建按钮默认样式 */
    static lv_style_t style_def;
    lv_style_init(&style_def);
    
    // 设置背景图片
    lv_style_set_bg_color(&style_def, lv_color_hex(0xffffff)); 
    lv_style_set_bg_image_src(&style_def, PHOTO_BTN_IMG_PATH);
    lv_style_set_bg_opa(&style_def, LV_OPA_COVER);     // 不透明度100%
    lv_style_set_bg_image_tiled(&style_def, false);    // 禁止平铺（自动拉伸）
    
    // 设置文字样式
    lv_style_set_text_color(&style_def, lv_color_white());
    lv_style_set_text_font(&style_def, &lv_font_montserrat_20);
    
    /* 1. 默认样式（带过渡动画） */
    lv_style_set_transition(&style_def, &transition);  // 确保 transition 已定义

    /* 2. 按压样式（缩放效果） */
    static lv_style_t style_pr;
    lv_style_init(&style_pr);
    lv_style_set_transform_zoom(&style_pr, 250);       // 放大到 250%（1.0 = 100%）
    lv_style_set_transform_pivot_x(&style_pr, 50);     // 缩放中心 X（百分比）
    lv_style_set_transform_pivot_y(&style_pr, 50);     // 缩放中心 Y（百分比）
    lv_style_set_image_recolor_opa(&style_pr, LV_OPA_0); // 禁用重色（保持原图颜色）
    /* 4. 创建按钮并应用样式 */
    lv_obj_t *btn = lv_btn_create(lv_scr_act());
    lv_obj_set_size(btn, 200, 200);  // 平板APP常见尺寸

    lv_coord_t screen_width = lv_disp_get_hor_res(NULL);  // NULL 表示默认显示器
    lv_coord_t screen_height = lv_disp_get_ver_res(NULL);
    lv_obj_set_pos(btn, screen_width/20+200*2+30*2, screen_height/2+50);
    
    // 应用样式
    lv_obj_add_style(btn, &style_def, LV_PART_MAIN);      // 默认状态
    lv_obj_add_style(btn, &style_pr, LV_STATE_PRESSED);   // 按压状态

    // /* 5. 添加文字标签 */
    // static lv_style_t style;
    // lv_style_init(&style);
    // lv_style_set_text_font(&style, font);

    // lv_obj_t *label = lv_label_create(btn);
    // lv_obj_add_style(label, &style, 0);
    // lv_label_set_text(label, "腾讯视频");
    // lv_obj_align(label, LV_ALIGN_OUT_BOTTOM_MID, 0,0);
}

static void create_browser_button(void) {
    /* 1. 定义过渡动画（按压时宽度变化+颜色变暗） */
    static lv_style_prop_t trans_props[] = {
        LV_STYLE_TRANSFORM_WIDTH,    // 动画属性：宽度变化
        LV_STYLE_IMAGE_RECOLOR_OPA,  // 动画属性：重新着色透明度
        0                           // 结束标记
    };
    
    static lv_style_transition_dsc_t transition;
    lv_style_transition_dsc_init(&transition, 
                                trans_props,           // 动画属性数组
                                lv_anim_path_linear,   // 线性动画曲线
                                200,                   // 动画时长（毫秒）
                                0,                     // 延迟时间
                                NULL);                 // 用户数据

    lv_font_t * font = lv_freetype_font_create(PATH_PREFIX "./aaa.ttf",
                                               LV_FREETYPE_FONT_RENDER_MODE_BITMAP,
                                               20,
                                               LV_FREETYPE_FONT_STYLE_NORMAL);

    if(!font) {
        LV_LOG_ERROR("freetype font create failed.");
        return;
    }

    /* 2. 创建按钮默认样式 */
    static lv_style_t style_def;
    lv_style_init(&style_def);
    
    // 设置背景图片
    lv_style_set_bg_color(&style_def, lv_color_hex(0xffffff)); 
    lv_style_set_bg_image_src(&style_def, BROWSER_BTN_IMG_PATH);
    lv_style_set_bg_opa(&style_def, LV_OPA_COVER);     // 不透明度100%
    lv_style_set_bg_image_tiled(&style_def, false);    // 禁止平铺（自动拉伸）
    
    // 设置文字样式
    lv_style_set_text_color(&style_def, lv_color_white());
    lv_style_set_text_font(&style_def, &lv_font_montserrat_20);
    
    /* 1. 默认样式（带过渡动画） */
    lv_style_set_transition(&style_def, &transition);  // 确保 transition 已定义

    /* 2. 按压样式（缩放效果） */
    static lv_style_t style_pr;
    lv_style_init(&style_pr);
    lv_style_set_transform_zoom(&style_pr, 250);       // 放大到 250%（1.0 = 100%）
    lv_style_set_transform_pivot_x(&style_pr, 50);     // 缩放中心 X（百分比）
    lv_style_set_transform_pivot_y(&style_pr, 50);     // 缩放中心 Y（百分比）
    lv_style_set_image_recolor_opa(&style_pr, LV_OPA_0); // 禁用重色（保持原图颜色）
    /* 4. 创建按钮并应用样式 */
    lv_obj_t *btn = lv_btn_create(lv_scr_act());
    lv_obj_set_size(btn, 200, 200);  // 平板APP常见尺寸

    lv_coord_t screen_width = lv_disp_get_hor_res(NULL);  // NULL 表示默认显示器
    lv_coord_t screen_height = lv_disp_get_ver_res(NULL);
    lv_obj_set_pos(btn, screen_width/20+200*3+30*3, screen_height/2+50);
    
    // 应用样式
    lv_obj_add_style(btn, &style_def, LV_PART_MAIN);      // 默认状态
    lv_obj_add_style(btn, &style_pr, LV_STATE_PRESSED);   // 按压状态

    // /* 5. 添加文字标签 */
    // static lv_style_t style;
    // lv_style_init(&style);
    // lv_style_set_text_font(&style, font);

    // lv_obj_t *label = lv_label_create(btn);
    // lv_obj_add_style(label, &style, 0);
    // lv_label_set_text(label, "腾讯视频");
    // lv_obj_align(label, LV_ALIGN_OUT_BOTTOM_MID, 0,0);
}

static void lv_home_page_init(void)
{
    // 设置背景图片（强制拉伸）
    lv_obj_t * obj = lv_obj_create(lv_scr_act());
    lv_obj_remove_style_all(obj); // 关键！移除所有默认样式
    lv_obj_set_size(obj, 1024, 600);
    lv_obj_align(obj, LV_ALIGN_TOP_LEFT, 0, 0);

    lv_obj_set_style_bg_image_src(obj, "A:background.jpg", LV_PART_MAIN);
    lv_obj_set_style_bg_opa(obj, LV_OPA_COVER, LV_PART_MAIN);
    lv_obj_set_style_bg_image_tiled(obj, false, LV_PART_MAIN);               // 禁用平铺
    lv_obj_set_style_bg_image_recolor_opa(obj, LV_OPA_TRANSP, LV_PART_MAIN); // 禁用重新着色

    lv_font_t * font = lv_freetype_font_create(PATH_PREFIX "./aaa.ttf",
                                               LV_FREETYPE_FONT_RENDER_MODE_BITMAP,
                                               54,
                                               LV_FREETYPE_FONT_STYLE_NORMAL);

    if(!font) {
        LV_LOG_ERROR("freetype font create failed.");
        return;
    }

    /* 添加文字标签 */
    static lv_style_t style;
    lv_style_init(&style);
    lv_style_set_text_font(&style, font);

    lv_obj_t *label = lv_label_create(obj);
    lv_obj_add_style(label, &style, 0);
    lv_label_set_text(label, "14:00");
    lv_obj_align(label, LV_ALIGN_TOP_MID, 0,100);
    
}

void DEMO2_UI_INIT(void)
{
    lv_home_page_init();
    create_weather_button();
    create_video_button();
    create_photo_button();
    create_browser_button();
}

#endif
#endif